import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    add (state) {
      state.count++
    },
    addN (state, n) {
      state.count += n
    },
    sub (state) {
      state.count--
    },
    subN (state, n) {
      state.count -= n
    }
  },
  actions: {
    addAsync (context) {
      // context相当于刚刚NEW出来的这个store实例
      setTimeout(() => {
        // 在 action 中，不能直接修改 state 中的数据
        // 必须通过 context.commit() 触发某个 mutation 才行
        context.commit('add')
      }, 1000)
    },
    addNAsyc (context, n) {
      setTimeout(() => {
        context.commit('addN', n)
      }, 1000)
    },
    subAsync (context) {
      setTimeout(() => {
        context.commit('sub')
      }, 1000)
    },
    subNAsync (context, n) {
      setTimeout(() => {
        context.commit('subN', n)
      }, 1000)
    }
  },
  getters: {
    shnowNum: function (state) {
      return '现在count最新的值是【' + state.count + '】'
    }
  },
  modules: {
  }
})
